package it.maganar.lesscaos.session;

import it.maganar.lesscaos.entity.Disponibilita;
import it.maganar.lesscaos.entity.Negoziazione;
import it.maganar.lesscaos.entity.Tappa;
import it.maganar.lesscaos.exception.UserNotLoggedException;
import it.maganar.lesscaos.util.TipoVeicolo;

import java.sql.Date;
import java.util.List;

import javax.ejb.Remote;

@SuppressWarnings("unchecked")
@Remote
public interface ServiceGateRemote {

	// ======== Generali =============
	
	public boolean inserisciRegistrazione(String nomeUtente, String password, String nome, String cognome, String nTelefono);
	
	public boolean login(String nomeUtente, String password);
	
	public void logout();
	
	// ======== Disponibilita =============
	
	public boolean inserisciDisponibilita(int numPosti, TipoVeicolo tipoVeicolo, Date data, Tappa partenza, Tappa arrivo, List listaTappe, boolean occasionale) throws UserNotLoggedException;
	
	public List ottieniListaDisponibilita() throws UserNotLoggedException;
	
	public List ottieniListaPartecipazioniDisponibilita(int id) throws UserNotLoggedException;
	
	public void eliminaDisponibilita(int id) throws UserNotLoggedException;
	
	// ======== Partecipazioni =============

	public boolean inserisciPercorso(Disponibilita iscrizione, Tappa partenza, Tappa arrivo) throws UserNotLoggedException;

	public List ottieniListaPercorsi(String partenza, String arrivo, boolean includi_parziali) throws UserNotLoggedException;

	public List ottieniListaPartecipazioni() throws UserNotLoggedException;

	public void eliminaPartecipazione(int id) throws UserNotLoggedException;
	
	// ======== Negoziazioni =============

	public List ottieniListaNegoziazioni() throws UserNotLoggedException;

	public boolean accettaCondizione(Negoziazione n) throws UserNotLoggedException;

	public boolean rifiutaCondizione(Negoziazione n) throws UserNotLoggedException;

	public boolean aggiungiCondizione(Negoziazione n, String condizione) throws UserNotLoggedException;
	
}
